package it.heima.xmy.Demo1;

import java.util.HashSet;
import java.util.Random;
import java.util.Set;
import java.util.TreeSet;

/*请按以下要求顺序编码：
1. 定义学生类Student，属性：姓名、性别、年龄
2. 定义测试类，及main()方法
3. 创建三个Student对象，分别设置以下数据：
   张三,男,20
   李四,女,21
   张三,男,20
4. 定义一个存储Student类型的HashSet集合，将上述三个对象存储到Set集合中，要求集合中不能存储姓名,性别,年龄相同的元素。
5. 使用增强for遍历集合，获取集合中每个Student对象，并打印属性值；
思路：自定义对象保存到HashSet集合中，需要重写equals和hashCode方法
*/
public class SetDemo02 {


    public static void main(String[] args) {
        Student student1 = new Student("张三",20,"男");
        Student student2 = new Student("李四",21,"女");
        Student student3 = new Student("张三",20,"男");
        Set<Student> set  = new HashSet<>();
        set.add(student1);
        set.add(student2);
        set.add(student3);
        for (Student student : set) {
            System.out.println(student);
        }
    }

    /*需求：
        利用TreeSet实现以下需求：
        1. 随机生成10个不同的0~50之间的整数，要求按照从小到大进行遍历。
        2. 随机生成10个不同的50~100之间的整数，要求按照从大到小进行遍历。
        思路分析：
        TreeSet是具有排序特性的，默认按照自然排序。如果自然排序满足不了需求，可以使用自定义比较器。
        需求1，可以使用自然排序实现；需求2可以使用自定义比较器实现 ,需要保证元素的唯一v*/
    public static class TreeSetDemo01 {
        public static void main(String[] args) {
            Set<Integer>set = new TreeSet<>();
            Random random = new Random();
            //需求1
            for (; ; ) {
                int num = random.nextInt(51);
                set.add(num);
                if(set.size()==10){
                    break;
                }
            }
            for (Integer integer : set) {
                System.out.print(integer+"  ");
            }
            System.out.println();
            System.out.println("----------");

            //需求2
            Set<Integer>set2 = new TreeSet<>((o1, o2) -> o2-o1);

            for (; ; ) {
                int num = random.nextInt(51)+50;
                set2.add(num);
                if(set2.size()==10){
                    break;
                }
            }
            for (Integer integer : set2) {
                System.out.print(integer+"  ");
            }

        }
    }
}
